/**
  SUNNY project, Anyang Normal University, IMP-CAS
  \class TAZBM
  \brief First try of toy shell model using ZBM potential. Ref.: PRL.21.39
  \author SUN Yazhou, asia.rabbit@163.com
  \since 2021/03/02
  \date Last modified: 2021/03/02 by SUN Yazhou
  \copyright 2020-2021 SUN Yazhou
  \copyright CNOK project, Anyang Normal University, IMP-CAS
*/

#ifndef _TAZBM_h_
#define _TAZBM_h_

#include "TAHamiltonian.h"
#include "TAMatrix.h"

class TAZBM : public TAHamiltonian{
public:
  TAZBM(const string &cfgFile);
  ~TAZBM();

  /// retrieve two-body matrix elements
  double TBME(int p, int q, int r, int s) const;
  double TBME(int l1, int l2, int l3, int l4, int J, int T) const;
  virtual double MatrixElement1N(int rr, int cc) const override;
  virtual double MatrixElement2N(int rr, int cc) const override;
  virtual double MatrixElement3N(int rr, int cc) const override;

protected:
  /// fTBME[6][6][6][2]: [ll][ll][J][T]
  /// {ll}[6]{ll}[6]: dd,ss,pp,ds,dp,sp; J[6]: 0,1,2,3,4,5; T[2]: 0,1
  double fTBME[6][6][6][2];
};

#endif
